﻿_Ficha = function () {

    this.Clie_ID = "";
    this.CodigoConvocatoria = "";

    this._Cont = "";

    this.DatosPersonales = null;
    this.InformacionAcademica = null;
    this.GradoBachiller = null;
    this.ExperienciaLaboral = null;
    this.CurriculumVitae = null;
    this.Encuesta = null;
    this.CodigoHonor = null;
    this.Idioma = null;
    this.VerificarEstadoFicha = function () {
        return true;
    }

    this.CargaDeEventos = function () {
        var _parent = this;

        _parent._Cont.on("click", "#tabDP", function (e) {
            e.preventDefault();
            if (_parent.DatosPersonales == null) {
                _parent.CargarDatosPersonales();
            }
            $(this).tab('show');
        });

        _parent._Cont.on("click", "#tabFA", function (e) {
            e.preventDefault();
            if (_parent.InformacionAcademica == null) {
                _parent.CargarInformacionAcademica();
            }
            $(this).tab('show');
        });

        _parent._Cont.on("click", "#tabEL", function (e) {
            e.preventDefault();
            if (_parent.ExperienciaLaboral == null) {
                _parent.CargarInformacionLaboral();
            }
            $(this).tab('show');
        });

        _parent._Cont.on("click", "#tabID", function (e) {
            e.preventDefault();
            if (_parent.Idioma == null) {
                _parent.CargarIdioma();
            }
            $(this).tab('show');
        });

        _parent._Cont.on("click", "#tabEN", function (e) {
            e.preventDefault();

            if (_parent.Encuesta == null) {
                _parent.CargarEncuesta();
            }
            $(this).tab('show');
        });

        _parent._Cont.on("click", "#tabCH", function (e) {
            e.preventDefault();

            if (_parent.CodigoHonor == null) {
                _parent.CargarCodigoHonor();
            }
            $(this).tab('show');
        });
    }

    this.CargarDatosPersonales = function () {
        //Carga de datos personales

        var _parent = this;

        if (_parent.DatosPersonales == null) {
            jQuery.getScript(URL_PAGE + "Scripts/app/postulante/Ficha/DatosPersonales.js", function () {
                DatosPersonales.prototype = new Mantenimiento();
                _parent.DatosPersonales = new DatosPersonales();

                _parent.CargarDatosPersonales();
            });
        } else {

            _parent.DatosPersonales.Clie_ID = _parent.Clie_ID;
            _parent.DatosPersonales.CodigoConvocatoria = _parent.CodigoConvocatoria;

            //Seteando la verificacion de la ficha

            _parent.DatosPersonales.Init(_parent._Cont.find("#_DatosPersonales"), {
                Register: URL_PAGE + "Postulante/Ficha/RegistrarDatosPersonales",
                Form: URL_PAGE + "Postulante/Ficha/PersonalForm"
            }, "All");

            _parent.DatosPersonales.VerificarEstadoFicha = function () {
                _parent.VerificarEstadoFicha();
            };

            _parent.DatosPersonales.AccionDespuesDeGrabar = function () {
                //Recargar el formulario de datos personales
                _parent.DatosPersonales.Form(
                    {
                        Clie_ID: this.Clie_ID,
                        CodigoConvocatoria: this.CodigoConvocatoria
                    });

                _parent._Cont.find("#tabFA").click();
            };

            _parent.DatosPersonales.Form(
                    {
                        Clie_ID: this.Clie_ID,
                        CodigoConvocatoria: this.CodigoConvocatoria
                    });
        }
    };

    this.CargarInformacionAcademica = function () {
        var _parent = this;
        if (_parent.InformacionAcademica == null && _parent.GradoBachiller == null) {
            //alert("entro a cargar el JS");
            jQuery.getScript(URL_PAGE + "Scripts/app/postulante/Ficha/InformacionAcademica.js", function () {
                //Para la informacion academica
                InformacionAcademica.prototype = new Mantenimiento();
                _parent.InformacionAcademica = new InformacionAcademica();

                //Para el grado de bachiller
                GradoBachiller.prototype = new Mantenimiento();
                _parent.GradoBachiller = new GradoBachiller();

                _parent.CargarInformacionAcademica();
            });
        } else {
            //alert("Ya tiene algo cargado, pasa al ELSE");
            _parent.InformacionAcademica.Init(_parent._Cont.find("#_InformacionAcademica"), {
                Register: URL_PAGE + "Postulante/Ficha/RegistrarFormacionAcademica",
                Form: URL_PAGE + "Postulante/Ficha/FormacionAcademicaForm",
                List: URL_PAGE + "Postulante/Ficha/FormacionAcademicaListado"
            }, "Modal");

            _parent.InformacionAcademica.Clie_ID = _parent.Clie_ID;
            _parent.InformacionAcademica.CodigoConvocatoria = _parent.CodigoConvocatoria;

            //Seteando la verificacion de la ficha
            _parent.InformacionAcademica.VerificarEstadoFicha = function () {
                _parent.VerificarEstadoFicha();
            }

            //Anterior Ficha
            _parent.InformacionAcademica.FichaAnterior = function () {
                _parent._Cont.find("#tabDP").click();
            }

            //Siguiente Ficha
            _parent.InformacionAcademica.FichaSiguiente = function () {
                _parent._Cont.find("#tabEL").click();
            }


            //Cargando la lista de informacion académica
            _parent.InformacionAcademica.List(
                    {
                        Clie_ID: _parent.Clie_ID,
                        CodigoConvocatoria: _parent.CodigoConvocatoria
                    });

            /***********************GRADO BACHILLER****************************/
            _parent.GradoBachiller.Init(_parent._Cont.find("#_GradoBachiller"), {
                Register: URL_PAGE + "Postulante/Ficha/AdjuntarGB",
                Form: URL_PAGE + "Postulante/Ficha/FormGB"
            }, "All");

            //Seteando la verificacion de la ficha
            _parent.GradoBachiller.VerificarEstadoFicha = function () {              
                _parent.VerificarEstadoFicha();
            }

            _parent.GradoBachiller.Clie_ID = _parent.Clie_ID;
            _parent.GradoBachiller.CodigoConvocatoria = _parent.CodigoConvocatoria;

            //Cargando la lista de informacion académica
            _parent.GradoBachiller.Form(
                    {
                        Clie_ID: _parent.Clie_ID,
                        CodigoConvocatoria: _parent.CodigoConvocatoria
                    });
        }
    };

    this.CargarInformacionLaboral = function () {

        var _parent = this;
        if (_parent.ExperienciaLaboral == null && _parent.CurriculumVitae == null) {

            jQuery.getScript(URL_PAGE + "Scripts/app/postulante/Ficha/InformacionLaboral.js", function () {
                ////////////////////////////////////////
                //Para la informacion laboral
                ExperienciaLaboral.prototype = new Mantenimiento();
                _parent.ExperienciaLaboral = new ExperienciaLaboral();

                //Para el grado de bachiller
                CurriculumVitae.prototype = new Mantenimiento();
                _parent.CurriculumVitae = new CurriculumVitae();

                _parent.CargarInformacionLaboral();
            });
        } else {
            _parent.ExperienciaLaboral.Init(_parent._Cont.find("#_ExperienciaLaboral"), {
                Register: URL_PAGE + "Postulante/Ficha/RegistrarExperienciaLaboral",
                Form: URL_PAGE + "Postulante/Ficha/ExperienciaLaboralForm",
                List: URL_PAGE + "Postulante/Ficha/ExperienciaLaboralListado"
            }, "Modal");

            _parent.ExperienciaLaboral.Clie_ID = _parent.Clie_ID;
            _parent.ExperienciaLaboral.CodigoConvocatoria = _parent.CodigoConvocatoria;

            //Seteando la verificacion de la ficha
            _parent.ExperienciaLaboral.VerificarEstadoFicha = function () {
                _parent.VerificarEstadoFicha();
            }

            //Anterior Ficha
            _parent.ExperienciaLaboral.FichaAnterior = function () {
                _parent._Cont.find("#tabFA").click();
            }

            //Siguiente Ficha
            _parent.ExperienciaLaboral.FichaSiguiente = function () {
                _parent._Cont.find("#tabID").click();
            }

            //Cargando la lista de informacion académica
            _parent.ExperienciaLaboral.List(
                {
                    Clie_ID: _parent.Clie_ID,
                    CodigoConvocatoria: _parent.CodigoConvocatoria
                });

            /***********************CURRICULUM VITAE****************************/
            _parent.CurriculumVitae.Init(_parent._Cont.find("#_CurriculumVitae"), {
                Register: URL_PAGE + "Postulante/Ficha/AdjuntarCV",
                Form: URL_PAGE + "Postulante/Ficha/FormCV"
            }, "All");

            _parent.CurriculumVitae.Clie_ID = _parent.Clie_ID;
            _parent.CurriculumVitae.CodigoConvocatoria = _parent.CodigoConvocatoria;

            //Seteando la verificacion de la ficha
            _parent.CurriculumVitae.VerificarEstadoFicha = function () {
                _parent.VerificarEstadoFicha();
            }

            //Cargando la lista de informacion académica
            _parent.CurriculumVitae.Form(
                    {
                        Clie_ID: _parent.Clie_ID,
                        CodigoConvocatoria: _parent.CodigoConvocatoria
                    });
        }
    };

    this.CargarIdioma = function () {
        var _parent = this;
        if (_parent.Idioma == null) {

            jQuery.getScript(URL_PAGE + "Scripts/app/postulante/Ficha/InformacionIdioma.js", function () {
                ////////////////////////////////////////
                //Para la informacion de idiomas
                Idioma.prototype = new Mantenimiento();
                _parent.Idioma = new Idioma();

                _parent.CargarIdioma();
            });
        } else {
            _parent.Idioma.Init(_parent._Cont.find("#_Idioma"), {
                Register: URL_PAGE + "Postulante/Ficha/RegistrarIdioma",
                Form: URL_PAGE + "Postulante/Ficha/IdiomaForm",
                List: URL_PAGE + "Postulante/Ficha/IdiomaListado"
            }, "Modal");

            _parent.Idioma.Clie_ID = _parent.Clie_ID;
            _parent.Idioma.CodigoConvocatoria = _parent.CodigoConvocatoria;

            //Seteando la verificacion de la ficha
            _parent.Idioma.VerificarEstadoFicha = function () {
                _parent.VerificarEstadoFicha();
            }

            //Anterior Ficha
            _parent.Idioma.FichaAnterior = function () {
                _parent._Cont.find("#tabEL").click();
            }

            //Siguiente Ficha
            _parent.Idioma.FichaSiguiente = function () {
                _parent._Cont.find("#tabEN").click();
            }

            //Cargando la lista de informacion académica
            _parent.Idioma.List(
                    {
                        Clie_ID: _parent.Clie_ID,
                        CodigoConvocatoria: _parent.CodigoConvocatoria
                    });
        }
    };

    this.CargarEncuesta = function () {
        var _parent = this;
        if (_parent.Encuesta == null) {

            jQuery.getScript(URL_PAGE + "Scripts/app/postulante/Ficha/Encuesta.js", function () {
                ////////////////////////////////////////
                //Para la informacion de idiomas
                Encuesta.prototype = new Mantenimiento();
                _parent.Encuesta = new Encuesta();

                _parent.CargarEncuesta();
            });
        } else {

            _parent.Encuesta.Clie_ID = _parent.Clie_ID;
            _parent.Encuesta.CodigoConvocatoria = _parent.CodigoConvocatoria;

            _parent.Encuesta.Init(_parent._Cont.find("#_Encuesta"), {
                Register: URL_PAGE + "Postulante/Ficha/EncuestaRegistrar",
                Form: URL_PAGE + "Postulante/Ficha/EncuestaForm"
            }, "All");

            //Seteando la verificacion de la ficha
            _parent.Encuesta.VerificarEstadoFicha = function () {
                _parent.VerificarEstadoFicha();
            }

            //Anterior Ficha
            _parent.Encuesta.FichaAnterior = function () {
                _parent._Cont.find("#tabID").click();
            }

            //Siguiente Ficha
            _parent.Encuesta.FichaSiguiente = function () {
                _parent._Cont.find("#tabCH").click();
            }

            //Cargando la lista de informacion académica
            _parent.Encuesta.Form(
                    {
                        Clie_ID: _parent.Clie_ID,
                        CodigoConvocatoria: _parent.CodigoConvocatoria
                    });
        }
    };


    this.CargarCodigoHonor = function () {
        var _parent = this;
        if (_parent.CodigoHonor == null) {

            jQuery.getScript(URL_PAGE + "Scripts/app/postulante/Ficha/CodigoHonor.js", function () {
                ////////////////////////////////////////
                //Para la informacion de idiomas
                CodigoHonor.prototype = new Mantenimiento();
                _parent.CodigoHonor = new CodigoHonor();

                _parent.CargarCodigoHonor();
            });
        } else {
            _parent.CodigoHonor.Clie_ID = _parent.Clie_ID;
            _parent.CodigoHonor.CodigoConvocatoria = _parent.CodigoConvocatoria;

            //Seteando la verificacion de la ficha
            _parent.CodigoHonor.VerificarEstadoFicha = function () {
                _parent.VerificarEstadoFicha();
            }

            //Anterior Ficha
            _parent.CodigoHonor.FichaAnterior = function () {
                _parent._Cont.find("#tabEN").click();
            }

            _parent.CodigoHonor.Init(_parent._Cont.find("#_CodigoHonor"), {
                Register: URL_PAGE + "Postulante/Ficha/RegistrarCodigoHonor",
                Form: URL_PAGE + "Postulante/Ficha/CodigoHonorForm"
            }, "All");

            //Cargando la lista de informacion académica
            _parent.CodigoHonor.Form(
                    {
                        Clie_ID: _parent.Clie_ID,
                        CodigoConvocatoria: _parent.CodigoConvocatoria
                    });
        }
    };

    this.Init = function (Cont, Clie_ID, CodigoConvocatoria) {
        this._Cont = Cont;
        this.Clie_ID = Clie_ID;
        this.CodigoConvocatoria = CodigoConvocatoria;

        //Inicializando con la carga de datos personales
        this.CargarDatosPersonales();
        this.CargaDeEventos();
        //cargar toda la info en la primera carga********
        /**
        this.CargarInformacionAcademica();
        this.CargarInformacionLaboral();
        this.CargarEncuesta();
        this.CargarIdioma();
        this.CargarCodigoHonor();
        **/

    }
};